package tripmaker
package movimientos

import Moneda._
import Pais._

object Territorio {
  trait TerritorioUruguayo extends Territorio {
    def país = Uruguay
    def gmt = -3
  }
  trait TerritorioChileno extends Territorio {
    def país = Chile
    def gmt = -4
  }
  trait TerritorioArgentino extends Territorio {
    def país = Argentina
    def gmt = -3
  }
  trait TerritorioBoliviano extends Territorio {
    def país = Bolivia
    def gmt = -4
  }
  trait TerritorioPeruano extends Territorio {
    def país = Perú
    def gmt = -5
  }

  object NingunLado extends Territorio {
    def país = NingunPais
    def gmt = 0
    def altitud = 0
  }

  object Montevideo extends TerritorioUruguayo {
    def altitud = 43
  }

  object Santiago extends TerritorioChileno {
    def altitud = 567
  }
  object LaSerena extends TerritorioChileno {
    def altitud = 0
  }
  object Coquimbo extends TerritorioChileno {
    def altitud = 0
  }

  object BuenosAires extends TerritorioArgentino {
    def altitud = 25
  }
  object LaQuiaca extends TerritorioArgentino {
    def altitud = 3442
  }

  object Villazón extends TerritorioBoliviano {
    def altitud = 3400
  }
  object Uyuni extends TerritorioBoliviano {
    def altitud = 3663
  }
  object LaPaz extends TerritorioBoliviano {
    def altitud = 3650
  }
  object Copacabana extends TerritorioBoliviano {
    def altitud = 3840
  }
  object IslaDelSol extends TerritorioBoliviano {
    def altitud = 3840
  }

  object Puno extends TerritorioPeruano {
    def altitud = 3827
  }
  object Taquile extends TerritorioPeruano {
    def altitud = 3950
  }
  object Cusco extends TerritorioPeruano {
    def altitud = 3399
  }
  object CaminoDelInca extends TerritorioPeruano {
    def altitud = 4200
  }
  object MachuPichu extends TerritorioPeruano {
    def altitud = 2438
  }
  object AguasCalientes extends TerritorioPeruano {
    def altitud = 1829
  }
  object Arequipa extends TerritorioPeruano {
    def altitud = 2335
  }
  object CañonDelColca extends TerritorioPeruano {
    def altitud = 3000
  }
  object Lima extends TerritorioPeruano {
    def altitud = 110
  }
}

trait Territorio extends util.ObjectToString {
  def moneda = país.moneda
  def país: Pais
  def altitud: Int
  def gmt: Int
  def nombre: String = toString
}